

typedef void (*init_call)(void);

#define MODULE_INIT(func) init_call _fn_##func __attribute__((unused, section(".my_init"))) = func

extern init_call _smy_init;

extern init_call _emy_init;

int a = 0x50;
void module1_init()
{
 
	for (int i = 0; i < 50; i++)
	{
		a = a + i;
	}
}
MODULE_INIT(module1_init);

void test_section()
{
	for (init_call *fn = &_smy_init; fn < &_emy_init; fn++)
	{
		(*fn)();
	}
}